package mx.com.switz.controller;

import java.util.List;
import mx.com.switz.dto.Producto;
import mx.com.switz.service.ProductoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("producto/")
public class ProductoController {

    @Autowired
    private ProductoService productoService;

    @RequestMapping("admoProductos")
    public String goAdmoProductos() {
        return "administrador/admoProductos";
    }

    @RequestMapping("Predeterminado")
    public String goFormPrederminado() {
        return "administrador/formPredeterminado";
    }

    @RequestMapping("productos")
    public String goProductos() {
        return "producto/desplegarProductos";
    }   
    

    @RequestMapping("insertpro")
    public String insertProducto(@RequestParam("claveCategoria") int claveCategoria,
            @RequestParam("nombre") String nombre,
            @RequestParam("detalles") String detalles,
            @RequestParam("precio") double precio) //@RequestParam("enVenta") int enVenta) 
    {
        Producto a = new Producto();
        a.setClaveCategoria(claveCategoria);
        a.setNombre(nombre);
        a.setDetalles(detalles);
        a.setPrecio(precio);
        // a.setEnVenta(enVenta);
        productoService.insertProducto(a);
        return "administrador/admoProductos";
    }

    // borrado
    @RequestMapping("delete")
    public String eliminaProducto(@RequestParam("clave") int clave) {
        Producto a = new Producto();
        a.setClave(clave);
        productoService.eliminaProducto(a);
        return "administrador/admoProductos";
    }

    // actualiza
    @RequestMapping("update")
    public String updateProducto(@RequestParam("clave") int clave,
            @RequestParam("nombre") String nombre,
            @RequestParam("claveCategoria") int claveCategoria,
            @RequestParam("detalles") String detalles,
            @RequestParam("precio") double precio) //@RequestParam("enVenta") int enVenta) 
    {
        Producto a = new Producto();
        a.setClave(clave);
        a.setNombre(nombre);
        a.setClaveCategoria(claveCategoria);
        a.setDetalles(detalles);
        a.setPrecio(precio);
        //a.setEnVenta(enVenta);
        productoService.actualizaProducto(a);
        return "administrador/admoProductos";
    }

    // Lista productos por nombre
    @RequestMapping("listar")
    public ModelAndView buscaProducto(@RequestParam("nombre") String nombre) {
        Producto a = new Producto();
        a.setNombre(nombre);
        productoService.findProductoByNombre(a);
        return new ModelAndView("administrador/listarProductos", "productos",
                productoService.findProductoByNombre(a));
    }

    // busca producto por nombre y lo manda a formulario de JSP datosProducto
    @RequestMapping("listar2")
    public ModelAndView busca2Producto(@RequestParam("nombre") String nombre) {
        Producto a = new Producto();
        // a.setNombre(clave);
        a.setNombre(nombre);
        // a.setDetalles(apePAterno);
        productoService.findProductoByNombre(a);
        return new ModelAndView("administrador/datosProducto", "productos",
                productoService.findProductoByNombre(a));
    }

    // Manda a llamar directamente el JSP desplegarProductos.
    // Muestra todos los productos
	/*
     * @RequestMapping("mostrar") public ModelAndView muestraProducto() {
     * productoService.listarProductos(); return new
     * ModelAndView("producto/desplegarProductos", "productos",
     * productoService.listarProductos());
     }
     */
    @RequestMapping("mostrar")
    @ResponseBody
    public List muestraProductos() {
        return productoService.listarProductos();

    }
}
